【小ネタ】Excelで開くと文字化けするCSVファイルをコマンドで一発で直す方法

【小ネタ】Excelで開くと文字化けするCSVファイルをコマンドで一発で直す方法

Clock Icon2024.10.31

リテールアプリ共創部のるおんです。
CSVファイルをExcelで開いたら文字化けしてしまい困った経験はありませんか?
今回はその原因と、コマンド一発で解決する方法をご紹介します。動作検証環境はmacOS Sonoma 14.6.1です

先に結論

iconvコマンドを使用することで、簡単に文字コードを変換できます:

zsh
iconv -c -f utf-8 -t shift-JIS [変換元ファイル] > [変換後ファイル]

文字化けの例

以下のようなCSVファイルがあるとします。

test.csv
"id","Name"
"1","テスト"
"2","テスト2"
"3","テスト3"

これをExcelで開くと...
スクリーンショット 2024-10-31 18.10.46
このように文字化けしてしまうことがあります。

なぜ文字化けが起きるのか

この問題は文字コードの違いによって発生します。多くの場合:

  • ExcelはShift-JISでの読み込みを期待している
  • CSVファイルはUTF-8など他の文字コードでエンコードされている場合がある
    この不一致により文字化けが発生します。

以下の参考記事にあるように、GUI操作でファイルを選択して直すこともできますが、「別名で保存」からShift-JISを選択できないことがあります。

https://support.freee.co.jp/hc/ja/articles/115002727126-CSVファイルが文字化けした場合の対処方法

また、GUI操作で毎回変換するのは手間がかかります。

対処法

iconvコマンドを使用することで、簡単に文字コードを変換できます:

zsh
iconv -c -f utf-8 -t shift-JIS [変換元ファイル] > [変換後ファイル]

各オプションの説明:
-c: 変換できない文字を無視
-f: 変換元の文字コード(今回はUTF-8)
-t: 変換先の文字コード(Shift-JIS)

例えば、Download/test.csvに文字化けしてしまうCSVがあり、これをShift-JISに変換するには

zsh
iconv -c -f utf-8 -t shift-JIS Downloads/test_utf.csv > Downloads/result_shiftjis.csv  

とすると、以下のように新しくresult_shiftjis.csvがDownloadフォルダ内に作られており、それをExcelで開くと文字化けが解消されているのがわかります。

Donwloadsフォルダ
スクリーンショット 2024-10-31 18.14.36
Excel

スクリーンショット 2024-10-31 18.14.52

おわりに

CSVファイルの文字化けは開発でよく遭遇する問題ですが、iconvコマンドを使えば簡単に解決できます。自分はLINEミニアプリ関連の開発をすることが多いのですが、LINEのユーザー情報を取得する際にみなさんいろいろな文字や絵文字などを設定しているため、中にはShift-JISに変換できないものもあります。そのような文字列が含まれる場合GUIから変更することができなかったのですが、iconvを使い、変更できない文字列はオプションの-cを設定することでスキップされるので強制的にファイル全体をShift-JISに変換できました。

以上。どなたかの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.